package mx.edu.ittoluca.fp;

import java.io.*;
import java.net.URL;
import java.net.URLConnection;

/**
 * Created with IntelliJ IDEA.
 * User: Victor Santillán
 * Date: 28/06/12
 * Time: 07:19 PM
 */
public class DescargarArchivo {

    public static void main(String[] args) throws IOException{
        String urlArchivo;
        String nombre;

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        System.out.println("Ingresa la URL del archivo a descargar: ");
        urlArchivo = br.readLine();
        // TODO verificar que sea una ULR válida
        System.out.print("Ingresa el nombre del archivo a guardar con extensión: ");
        nombre = br.readLine();

        try {
            // se crea el objeto URL
            URL url = new URL(urlArchivo);

            // se establece la conexión
            URLConnection urlCon = url.openConnection();
            // TODO obtener la extensión del archivo a descargar

            // muestra el tipo de archivo
            // TODO mostrar más información del archivo
            System.out.println("Tipo de archivo: " + urlCon.getContentType());

            // se obtiene el InputStream del archivo y se crea el archivo de forma local.
            InputStream is = urlCon.getInputStream();
            // TODO mostrar una ventana para seleccionar dónde guardar el archivo
            FileOutputStream fos = new FileOutputStream("C:/Users/Victor Santillán/Desktop/" + nombre);

            // lectura del archivo y escritura en archivo local
            // TODO obtener el tamaña del archivo y asignar el buffer dependiendo del tamaño
            byte[] array = new byte[100000]; // buffer temporal de lectura, varia dependiendo del tamaño del archivo.
            int leido = is.read(array);
            while (leido > 0) {
                fos.write(array, 0, leido);
                leido = is.read(array);
            }
            //TODO mostrar progreso de la descarga y mensaje de finalización de la descarga
            System.out.println("Archivo guardado en el escritorio.");

            // se cierra la conexión y el archivo
            is.close();
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
